package cn.com.caluation;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class CaluationTest {
//    假设一个三位数为x，则
//
//    个位：x%10
//
//    十位：x/10%10
//
//    百位：x/100%10
/*
 在控制台输出所有的“水仙花数”

    看到这个需求，我们首先要解决的问题就是，什么样的数据是“水仙花数”？它满足如下两个条件：

            ① 水仙花数是一个三位数

    比如：111 222 333 370 371 520 999

            ② 水仙花数的个位、十位、百位的数字立方和等于原数

*/
    private void Fortest01(){
        List<Integer> list = new LinkedList<>();
        for(int i = 102;i<=999;i++){

            int a = i/100%10;//百位
            int b = i/10%10;//十位
            int c = i%10;//个位
            int a1 =1,b1=1,c1=1;
            for(int j=0;j<3;j++){
                a1 *= a;
                b1 *= b;
                c1 *= c;
            }
            int sum = a1 + b1 + c1;
            if(sum==i){
                list.add(i);
            }
        }

        System.out.println("水仙花数: " + list.toString());
        System.out.println("水仙花数个数: " + list.size());
    }
    public static void main(String[] args) {
       CaluationTest c = new CaluationTest();
       c.Fortest01();
       c.Fortest02();
    }

/*
*
* 需求：输出所有五位数的回文数

看到这个需求，我们首先要解决的问题就是，什么样的数据是“回文数”？

那什么是“回文数”呢？一个数，无论是从左往右读,还是从右往左读，读起来都相同的数,叫做“回文数”

举例：

10101，12321：是回文数
*
*
*
* */
    private void Fortest02(){
        StringBuilder s = new StringBuilder();
        for(int i=10000;i<=99999;i++){
            int wa = i/10000%10;
            int qian = i/1000%10;
            int shi = i/10%10;
            int ge = i%10;

            if(wa == ge && qian==shi){
                s.append(String.valueOf(i) + ",");
            }
        }

        System.out.println("回文数: " + s.substring(0,s.toString().lastIndexOf(",")));
    }
}
